Add an "override_redirect" bit.
authorSoeren Sandmann <sandmann@daimi.au.dk>
Fri, 9 Jul 2004 21:27:09 +0000 (21:27 +0000)
committerSøren Sandmann Pedersen <ssp@src.gnome.org>
Fri, 9 Jul 2004 21:27:09 +0000 (21:27 +0000)
Fri Jul  9 23:26:09 2004  Soeren Sandmann  <sandmann@daimi.au.dk>

* gdk/x11/gdkwindow-x11.h (struct _GdkWindowImplX11): Add an
"override_redirect" bit.

* gdk/x11/gdkwindow-x11.c (gdk_window_new): Set it here.

* gdk/x11/gdkwindow-x11.c (gdk_window_move, gdk_window_resize,
gdk_window_move_resize):
Update the local size/position cache
immediately for override redirect windows.

* gdk/x11/gdkwindow-x11.c (show_window_internal): Invalidate
newly mapped child and override redirect windows.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/x11/gdkwindow-x11.c
gdk/x11/gdkwindow-x11.h

index c4f68ba9176434bfc206cb5f133610656837cca5..f67d06989b199961567504ee4afa22e36fb345f4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+Fri Jul  9 23:26:09 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
+
+       * gdk/x11/gdkwindow-x11.h (struct _GdkWindowImplX11): Add an
+       "override_redirect" bit.
+
+       * gdk/x11/gdkwindow-x11.c (gdk_window_new): Set it here.
+       
+       * gdk/x11/gdkwindow-x11.c (gdk_window_move, gdk_window_resize,
+       gdk_window_move_resize): 
+       Update the local size/position cache
+       immediately for override redirect windows.
+
+       * gdk/x11/gdkwindow-x11.c (show_window_internal): Invalidate
+       newly mapped child and override redirect windows.
+
 2004-07-09  Federico Mena Quintero  <federico@ximian.com>
 
        Fixes #137031:
index c4f68ba9176434bfc206cb5f133610656837cca5..f67d06989b199961567504ee4afa22e36fb345f4 100644 (file)
@@ -1,3 +1,18 @@
+Fri Jul  9 23:26:09 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
+
+       * gdk/x11/gdkwindow-x11.h (struct _GdkWindowImplX11): Add an
+       "override_redirect" bit.
+
+       * gdk/x11/gdkwindow-x11.c (gdk_window_new): Set it here.
+       
+       * gdk/x11/gdkwindow-x11.c (gdk_window_move, gdk_window_resize,
+       gdk_window_move_resize): 
+       Update the local size/position cache
+       immediately for override redirect windows.
+
+       * gdk/x11/gdkwindow-x11.c (show_window_internal): Invalidate
+       newly mapped child and override redirect windows.
+
 2004-07-09  Federico Mena Quintero  <federico@ximian.com>
 
        Fixes #137031:
index c4f68ba9176434bfc206cb5f133610656837cca5..f67d06989b199961567504ee4afa22e36fb345f4 100644 (file)
@@ -1,3 +1,18 @@
+Fri Jul  9 23:26:09 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
+
+       * gdk/x11/gdkwindow-x11.h (struct _GdkWindowImplX11): Add an
+       "override_redirect" bit.
+
+       * gdk/x11/gdkwindow-x11.c (gdk_window_new): Set it here.
+       
+       * gdk/x11/gdkwindow-x11.c (gdk_window_move, gdk_window_resize,
+       gdk_window_move_resize): 
+       Update the local size/position cache
+       immediately for override redirect windows.
+
+       * gdk/x11/gdkwindow-x11.c (show_window_internal): Invalidate
+       newly mapped child and override redirect windows.
+
 2004-07-09  Federico Mena Quintero  <federico@ximian.com>
 
        Fixes #137031:
index c4f68ba9176434bfc206cb5f133610656837cca5..f67d06989b199961567504ee4afa22e36fb345f4 100644 (file)
@@ -1,3 +1,18 @@
+Fri Jul  9 23:26:09 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
+
+       * gdk/x11/gdkwindow-x11.h (struct _GdkWindowImplX11): Add an
+       "override_redirect" bit.
+
+       * gdk/x11/gdkwindow-x11.c (gdk_window_new): Set it here.
+       
+       * gdk/x11/gdkwindow-x11.c (gdk_window_move, gdk_window_resize,
+       gdk_window_move_resize): 
+       Update the local size/position cache
+       immediately for override redirect windows.
+
+       * gdk/x11/gdkwindow-x11.c (show_window_internal): Invalidate
+       newly mapped child and override redirect windows.
+
 2004-07-09  Federico Mena Quintero  <federico@ximian.com>
 
        Fixes #137031:
index 79f5fb52c4ad9608aeaaa27ebd6aad597d55483e..e764de8ff8571c3e4fc3ed8960903b2f2d80d227 100644 (file)
@@ -608,6 +608,8 @@ gdk_window_new (GdkWindow     *parent,
   else
     xattributes.override_redirect = False;
 
+  impl->override_redirect = xattributes.override_redirect;
+  
   if (private->parent && private->parent->guffaw_gravity)
     {
       xattributes.win_gravity = StaticGravity;
@@ -683,6 +685,8 @@ gdk_window_new (GdkWindow     *parent,
          xattributes.override_redirect = True;
          xattributes.cursor = None;
          xattributes_mask |= CWSaveUnder | CWOverrideRedirect;
+
+         impl->override_redirect = TRUE;
        }
     }
   else
@@ -1215,7 +1219,17 @@ show_window_internal (GdkWindow *window,
       g_assert (GDK_WINDOW_IS_MAPPED (window));
 
       if (impl->position_info.mapped)
-        XMapWindow (xdisplay, xwindow);
+       {
+         XMapWindow (xdisplay, xwindow);
+
+         if (!private->input_only &&
+             (private->window_type == GDK_WINDOW_CHILD ||
+              impl->override_redirect) &&
+             gdk_window_is_viewable (window))
+           {
+             gdk_window_invalidate_rect (window, NULL, TRUE);
+           }
+       }
     }
 }
 
@@ -1379,17 +1393,25 @@ gdk_window_move (GdkWindow *window,
   g_return_if_fail (GDK_IS_WINDOW (window));
 
   impl = GDK_WINDOW_IMPL_X11 (private->impl);
-
+         
   if (!GDK_WINDOW_DESTROYED (window))
     {
       if (GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD)
-       _gdk_window_move_resize_child (window, x, y,
-                                      impl->width, impl->height);
+       {
+         _gdk_window_move_resize_child (window, x, y,
+                                        impl->width, impl->height);
+       }
       else
        {
          XMoveWindow (GDK_WINDOW_XDISPLAY (window),
                       GDK_WINDOW_XID (window),
                       x, y);
+
+         if (impl->override_redirect)
+           {
+             private->x = x;
+             private->y = y;
+           }
        }
     }
 }
@@ -1429,18 +1451,28 @@ gdk_window_resize (GdkWindow *window,
   if (!GDK_WINDOW_DESTROYED (window))
     {
       if (GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD)
-       _gdk_window_move_resize_child (window, private->x, private->y,
-                                      width, height);
+       {
+         _gdk_window_move_resize_child (window, private->x, private->y,
+                                        width, height);
+       }
       else
        {
          GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (private->impl);
-         
-         if (width != impl->width || height != impl->height)
-           private->resize_count += 1;
 
          XResizeWindow (GDK_WINDOW_XDISPLAY (window),
                         GDK_WINDOW_XID (window),
                         width, height);
+
+         if (impl->override_redirect)
+           {
+             impl->width = width;
+             impl->height = height;
+           }
+         else
+           {
+             if (width != impl->width || height != impl->height)
+               private->resize_count += 1;
+           }
        }
     }
 }
@@ -1480,17 +1512,28 @@ gdk_window_move_resize (GdkWindow *window,
   if (!GDK_WINDOW_DESTROYED (window))
     {
       if (GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD)
-       _gdk_window_move_resize_child (window, x, y, width, height);
+       {
+         _gdk_window_move_resize_child (window, x, y, width, height);
+       }
       else
        {
          GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (private->impl);
-         
-         if (width != impl->width || height != impl->height)
-           private->resize_count += 1;
-         
+
          XMoveResizeWindow (GDK_WINDOW_XDISPLAY (window),
                             GDK_WINDOW_XID (window),
                             x, y, width, height);
+         if (impl->override_redirect)
+           {
+             private->x = x;
+             private->y = y;
+             impl->width = width;
+             impl->height = height;
+           }
+         else
+           {
+             if (width != impl->width || height != impl->height)
+               private->resize_count += 1;
+           }
        }
     }
 }
@@ -3286,11 +3329,16 @@ gdk_window_set_override_redirect (GdkWindow *window,
 
   if (!GDK_WINDOW_DESTROYED (window))
     {
-      attr.override_redirect = (override_redirect == FALSE)?False:True;
+      GdkWindowObject *private = (GdkWindowObject *)window;
+      GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (private->impl);
+
+      attr.override_redirect = (override_redirect? True : False);
       XChangeWindowAttributes (GDK_WINDOW_XDISPLAY (window),
                               GDK_WINDOW_XID (window),
                               CWOverrideRedirect,
                               &attr);
+
+      impl->override_redirect = attr.override_redirect;
     }
 }
 
index f76e061d4c7f085c8dde8859534509513c47b915..4e726f4b80e08bac2ce48f389344b92e7dcba05a 100644 (file)
@@ -72,6 +72,7 @@ struct _GdkWindowImplX11
   GdkXPositionInfo position_info;
   GdkToplevelX11 *toplevel;    /* Toplevel-specific information */
   gint8 toplevel_window_type;
+  guint override_redirect : 1;
 };
  
 struct _GdkWindowImplX11Class